<?php

# -- DÉBUT NOTE DE LICENCE -------------------------------------
#
# Ce fichier fait partie de Clicpage.
#
# Copyright (c) 2010 Francois (www.clicpage.net)
# Distribué selon les termes de la licence GPL version 2.0.
# Consultez le fichier LICENCE ou
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# Ce fichier a été créé le 1 septembre 2010 et est inspiré
# de Clearbricks.
#
# Note de licence de Clearbricks:
# Copyright (c) 2003-2010 Olivier Meunier & Association Dotclear
# Clearbricks est distribué selon les termes de la licence GPL
# version 2.0.
#
# -- FIN NOTE DE LICENCE ---------------------------------------

class cpDt extends dt
{
	
	/**
	* Renvoie une belle date (ex.: Aujourd'hui, à 15:08)
	*
	* @param array $params		 	Format pour les belles dates
	* @param integer	$ts		Timestamp
	* @param string	$tz			Timezone
	* @return	string
	*
	* Format pour les belles dates:
	* 	afficherJour	bool	Affiche le jour (aujourd'hui, hier)				défaut:true
	* 	afficherHeure	bool	Affiche l'heure							défaut:true
	* 	formatDate	string	Format de date si impossible de transformer en belle date	défaut:%e %B %Y
	*  	formatHeure	string	Format de l'heure						défaut:%H:%M
	*	today		bool	Utiliser le mot «aujourd'hui»					défaut:true
	*	yesterday	bool	Utiliser le mot «hier»						défaut:true
	* 
	*/
	public static function belleDate($params = array(), $ts, $tz=null)
	{
		
		$params['afficherJour'] = isset($params['afficherJour']) ? $params['afficherJour'] : true;
		$params['afficherHeure'] = isset($params['afficherHeure']) ? $params['afficherHeure'] : true;
		$params['formatDate'] = isset($params['formatDate']) ? $params['formatDate'] : __('%e %B %Y');
		$params['formatHeure'] = isset($params['formatHeure']) ? $params['formatHeure'] : __('%H:%M');
		$params['le'] = isset($params['le']) ? $params['le'] : false;
		$params['today'] = isset($params['today']) ? $params['today'] : true;
		$params['yesterday'] = isset($params['yesterday']) ? $params['yesterday'] : true;
		
		if ($tz) {
			$T = self::getTZ();
			self::setTZ($tz);
		}
		
		$str = '';
		
		if($params['afficherJour'])
		{
			
			$jourActuel = self::str('%d/%m/%Y', time());
			
			if( self::str('%d/%m/%Y', $ts) == $jourActuel && $params['today'] ) {
				$str.=__("aujourd'hui");
			} elseif(self::str('%d/%m/%Y', $ts) == $jourActuel-86400 && $params['yesterday']) {
				$str.=__("hier");
			} else {
				if($params['le']) {
					$str.=__('le ');
				}
				$str.=self::str($params['formatDate'], $ts);
			}
			
		}
		
		if($params['afficherJour'] && $params['afficherHeure']) {
			$str.=__(' à ');
		}
		
		if($params['afficherHeure']) {
			$str.=self::str($params['formatHeure'], $ts);
		}
		
		if ($tz) {
			self::setTZ($T);
		}
		
		return $str;
		
	}
	
	
	/**
	* Formate un timestamp issu du fuseau horaire de
	* Clicpage au format ISO-8601.
	*
	* @param integer	$ts		Timestamp
	* @param string		$tz		Timezone
	* @return	string
	*/
	public static function iso8601($ts)
	{
		$o = self::cpGetTimeOffset($ts);
		$of = sprintf('%02u:%02u',abs($o)/3600,(abs($o)%3600)/60);
		return date('Y-m-d\\TH:i:s',$ts).($o < 0 ? '-' : '+').$of;
	}
	
	
	/**
	* Formate un timestamp issu du fuseau horaire de
	* Clicpage au format RFC-822.
	*
	* @param integer	$ts		Timestamp
	* @param string	$tz		Timezone
	* @return	string
	*/
	public static function rfc822($ts)
	{
		# Get offset
		$o = self::cpGetTimeOffset($ts);
		$of = sprintf('%02u%02u',abs($o)/3600,(abs($o)%3600)/60);
		return strftime('%a, %d %b %Y %H:%M:%S '.($o < 0 ? '-' : '+').$of,$ts);
	}
	
	
	/**
	* 
	* Calcule le décalage pour le fuseau horaire utilisé
	* par Clicpage et un timestamp optionnel.
	*
	* @param integer	$ts		Timestamp
	* @return integer
	*/
	public static function cpGetTimeOffset($ts=false)
	{
		if (!$ts) {
			$ts = time();
		}

		return date('Z',$ts);
	}
	
	
}
?>